package com.csmht.tododemo.service.impl;

import com.csmht.tododemo.annotation.RoleIntercept;
import com.csmht.tododemo.mapper.ClassMapper;
import com.csmht.tododemo.pojo.dto.ClassDTO;
import com.csmht.tododemo.pojo.entity.ClassEntity;
import com.csmht.tododemo.pojo.enumeration.RoleEnum;
import com.csmht.tododemo.pojo.vo.ClassVO;
import com.csmht.tododemo.service.ClassService;
import com.csmht.tododemo.until.BaseUnit;
import jakarta.annotation.Resource;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

/**
 * ClassServiceImpl - 分类业务逻辑实现类
 * 实现ClassService接口定义的分类管理功能
 * 主要功能包括：
 * 1. 添加新分类
 * 2. 批量删除分类
 * 3. 查询当前用户的所有分类
 * 分类数据与用户关联，确保数据隔离
 */
@Service
public class ClassServiceImpl implements ClassService {

    @Resource
    private ClassMapper classMapper;

    @Override
    /*
      添加新分类
      @param classDTO 分类数据传输对象，包含分类名称等信息
     * 自动设置创建时间和创建人ID
     */
    public void add(ClassDTO classDTO) {
        // 创建分类实体对象
        ClassEntity classEntity = new ClassEntity();
        // 复制DTO属性到实体对象
        BeanUtils.copyProperties(classDTO, classEntity);
        // 设置创建时间为当前时间
        classEntity.setCreateTime(LocalDateTime.now());
        // 设置创建人ID(从当前上下文获取)
        classEntity.setCreateUser(BaseUnit.getCurrentId());
        // 保存分类到数据库
        classMapper.insert(classEntity);
    }


    /**
     * 批量删除分类
     * @param ids 要删除的分类ID列表
     */
    @Override
    public void delete(List<Long> ids) {
        classMapper.deleteByIds(ids);
    }


    /**
     * 查询当前用户的所有分类
     * @return 分类视图对象列表，包含分类ID和名称等信息
     */
    @Override
    public List<ClassVO> getAll() {
        // 获取当前用户ID
        Long userId = BaseUnit.getCurrentId();
        // 查询并返回该用户的所有分类
        return classMapper.selectByUserId(userId);
    }
}